<?php
// no direct access
defined( '_JEXEC' ) or die( 'Acces interdit' );

jimport( 'joomla.application.component.model' );

class TournoiModelListe extends JModel {

	function __construct() {
		parent::__construct();
		$mainframe = JFactory::getApplication();

		// recupere les parametres de pagination de la session utilisateur
		$limit = $mainframe->getUserStateFromRequest('global.list.limit', 'limit', 20, 'int');
		$limitstart = JRequest::getVar('limitstart', 0, '', 'int');

		// si limit a changé, on ajuste la nouvelle limitstart pour notre liste
		$limitstart = ($limit != 0 ? (floor($limitstart/$limit)*$limit) : 0);
		// on mémorise les nouvelles valeurs dans la session utilisateur
		$this->setState('limitstart', $limitstart);
		$this->setState('limit', $limit);
	}

	/**
	 * Methode pour construire la requete SQL
	 * @return string de la requete SQL
	 */
	function _buildQuery() {
		$user = & JFactory::getUser();
		$idUser = $user->get('id');
		
		$query = null;
		$query = "SELECT #__tournois.id, titre, description, lieu, dateDebut, heure, createur, #__tournois.statut, #__users.username, #__joueurs.statut as inscrit FROM #__tournois 
						LEFT JOIN #__joueurs ON #__joueurs.idUsers=".$idUser." AND #__tournois.id=#__joueurs.idTournois
						INNER JOIN #__users ON #__tournois.createur=#__users.id 
						WHERE #__joueurs.statut is not null
						OR createur=".$idUser;				
		if (JDEBUG) echo "<br />DEBUG : query SQL=".$query;

		return $query;
	}

	/**
	 * Ma Methode pour recuperer mes données
	 * @return object with data
	 */
	function &getDataContents() {
		$this->_data = null;
	
		// construction de la requete SQL
		$query = $this->_buildQuery();
		// recuperation des données selon la page 'Pagination' ou l'on se trouve
		if ($query) $this->_data = $this->_getList( $query, $this->getState('limitstart'), $this->getState('limit') );

		return $this->_data;
	}

// ------------Code communs aux modeles pour gerer la pagination------------------------
	
	function getTotal() {
		if (empty($this->_total)) {
			$query = $this->_buildQuery();
			// calcul le nombre d'enregistrement
			$this->_total = $this->_getListCount($query);
		}
		return $this->_total;
	}

	function getPagination() {
		// initialise les données de pagination si besoin
		if (empty($this->_pagination)) {
			jimport('joomla.html.pagination');
			$this->_pagination = new JPagination(
				$this->getTotal(), $this->getState('limitstart'), $this->getState('limit')
			);
		}
		return $this->_pagination;
	}
}
?>
